home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / programming / other / wild / support / wilf / textmeta / textmeta.c < prev    next >
C/C++ Source or Header  |  1999-05-25  |  1KB  |  68 lines

  1.  
  2. #include <exec/types.h>
  3. #include <meta.h>
  4. #include <io.h>
  5. #include <inline/dos.h>
  6. #include <exec/libraries.h>
  7. #include <inline/exec.h>
  8.  
  9. extern struct Library *DOSBase;
  10. extern struct ExecBase *ExecBase;
  11.  
  12. #define ARG_FILE    0
  13. #define TXT_Attrs    "Attributes:\n"
  14. #define TXT_Childs    "Childs:\n"
  15.  
  16. ULONG outfh=NULL;
  17.  
  18. void ShowAttr(struct Attr *att)
  19. {
  20.  Write(outfh,&att->attr_Name,StrLen(&att->attr_Name));
  21.  Write(outfh,"     ",5);
  22.  Write(outfh,&att->attr_Value,StrLen(&att->attr_Value));
  23.  Write(outfh,'\n',1);
  24. }
  25.  
  26. void ShowChilds(struct Common *com);
  27.  
  28. void ShowObj(struct Common *com)
  29. {
  30.  struct Attr *catt,*natt;
  31.  Write(outfh,TXT_Attrs,sizeof(TXT_Attrs));
  32.  catt=com->com_Attrs.mlh_Head;
  33.  while (natt=catt->attr_Node.mln_Succ)
  34.   {
  35.    ShowAttr(catt);
  36.    catt=natt;
  37.   }
  38.  Write(outfh,TXT_Childs,sizeof(TXT_Childs)); 
  39.  ShowChilds(com);
  40. }
  41.  
  42. void ShowChilds(struct Common *com)
  43. {
  44.  struct Common *ccom,*ncom;
  45.  ccom=com->com_Childs.mlh_Head;
  46.  while (ncom=ccom->com_Node.mln_Succ)
  47.   {
  48.    ShowObj(ccom);
  49.    ccom=ncom;
  50.   }
  51. }
  52.  
  53. int main()
  54. {
  55.  ULONG *rda,arg[1];
  56.  if (rda=ReadArgs("FILE/A",arg,NULL))
  57.   {
  58.   struct Meta *meta;
  59.   if (meta=LoadMETA(arg[0]))
  60.    {
  61.     outfh=Output();
  62.     
  63.     ShowObj(meta);   
  64.       
  65.     FreeMETA(meta);
  66.    }
  67.   }
  68. }